উদাহরণ সহ Pagination এবং Sorting বাস্তবায়ন

Java Technologies - স্প্রিং জেডিবিসি (Spring JDBC) Spring JDBC এ Pagination এবং Sorting |
75
75

Spring JDBC-এ Pagination এবং Sorting বাস্তবায়ন করা খুবই সাধারণ এবং কার্যকরী। এটি সাধারণত বড় ডেটাবেস থেকে ডেটা লোড করার জন্য ব্যবহৃত হয়, যাতে আপনি প্রয়োজনীয় ডেটা ভিউ করতে পারেন এবং বাকি ডেটা প্রসেস করতে আপনার অ্যাপ্লিকেশনে ভারসাম্য বজায় থাকে। Spring JDBC-তে Pagination এবং Sorting বাস্তবায়ন করতে হলে, সাধারণত SQL কোয়েরি ব্যবহার করা হয়।

Pagination এবং Sorting এর ধারণা

  • Pagination: এটি সাধারণত ডেটাবেস থেকে সীমিত পরিমাণ ডেটা রিটার্ন করার জন্য ব্যবহৃত হয়। এতে দুটি মৌলিক ধারণা থাকে:
    • Page Size: প্রতি পেজে কতগুলো রেকর্ড শো হবে।
    • Page Number: আপনি কোন পেজে আছেন।
  • Sorting: এটি ডেটা একটি নির্দিষ্ট অর্ডারে সাজানোর জন্য ব্যবহৃত হয়, যেমন আকার অনুযায়ী (ASC বা DESC), বা নাম অনুযায়ী।

উদাহরণ: Spring JDBC-তে Pagination এবং Sorting

আমরা এখানে একটি উদাহরণ দেখাবো, যেখানে আমরা Spring JDBC ব্যবহার করে একটি টেবিল থেকে ডেটা পেজিনেট এবং সোর্ট করবো।

1. UserRepository.java - Pagination এবং Sorting বাস্তবায়ন

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;
import java.util.HashMap;

@Repository
public class UserRepository {

    @Autowired
    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;

    // Method to fetch users with pagination and sorting
    public List<User> getUsers(int pageNumber, int pageSize, String sortBy, String sortOrder) {
        // Calculate offset
        int offset = (pageNumber - 1) * pageSize;

        // Create SQL query with sorting and pagination
        String sql = "SELECT * FROM users ORDER BY " + sortBy + " " + sortOrder + " LIMIT :limit OFFSET :offset";

        // Set parameters for the query
        Map<String, Object> params = new HashMap<>();
        params.put("limit", pageSize);
        params.put("offset", offset);

        // Execute query and return result
        return namedParameterJdbcTemplate.query(sql, params, new UserRowMapper());
    }
}

এখানে:

  • pageNumber এবং pageSize দিয়ে পেজিনেশন কনফিগার করা হয়েছে।
  • sortBy এবং sortOrder দিয়ে সোর্টিং কনফিগার করা হয়েছে (যেমন, name অনুযায়ী ASC বা DESC)।
  • LIMIT এবং OFFSET SQL কোয়েরি ব্যবহার করা হয়েছে, যেখানে:
    • LIMIT পরিমাণ ডেটা নির্ধারণ করে (এটি এক পেজের ডেটা সংখ্যা)।
    • OFFSET পেজের শুরুর পজিশন নির্ধারণ করে।
  • MapSqlParameterSource অথবা HashMap ব্যবহার করে প্যারামিটারগুলো দেওয়া হয়েছে (যেমন limit, offset ইত্যাদি)।

2. UserRowMapper.java - RowMapper ক্লাস

import org.springframework.jdbc.core.RowMapper;
import java.sql.ResultSet;
import java.sql.SQLException;

public class UserRowMapper implements RowMapper<User> {
    @Override
    public User mapRow(ResultSet rs, int rowNum) throws SQLException {
        User user = new User();
        user.setId(rs.getInt("user_id"));
        user.setName(rs.getString("user_name"));
        user.setEmail(rs.getString("email"));
        user.setAge(rs.getInt("age"));
        return user;
    }
}

এখানে UserRowMapper একটি ক্লাস যা RowMapper ইন্টারফেসকে ইমপ্লিমেন্ট করে। এটি SQL রেজাল্ট থেকে User অবজেক্ট তৈরি করে।

3. User.java - User ক্লাস

public class User {
    private int id;
    private String name;
    private String email;
    private int age;

    // Getters and Setters
    public int getId() { return id; }
    public void setId(int id) { this.id = id; }

    public String getName() { return name; }
    public void setName(String name) { this.name = name; }

    public String getEmail() { return email; }
    public void setEmail(String email) { this.email = email; }

    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; }
}

এখানে User একটি পিওজিও ক্লাস, যা আমাদের ডেটাবেসের ইউজার টেবিলের রেকর্ড প্রতিনিধিত্ব করে।

4. Pagination এবং Sorting Call করার উদাহরণ

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public void displayUsers(int pageNumber, int pageSize, String sortBy, String sortOrder) {
        // Fetch paginated and sorted users
        List<User> users = userRepository.getUsers(pageNumber, pageSize, sortBy, sortOrder);

        // Display users
        for (User user : users) {
            System.out.println(user.getId() + " - " + user.getName() + " - " + user.getEmail() + " - " + user.getAge());
        }
    }
}

এখানে, UserService ক্লাসের মাধ্যমে UserRepository এর getUsers() মেথড কল করা হচ্ছে যেখানে পেজ নম্বর, পেজ সাইজ, সোর্ট ফিল্ড এবং সোর্ট অর্ডার প্যারামিটার হিসেবে পাঠানো হচ্ছে।

5. Controller (Optional)

যদি আপনি এটি ওয়েব অ্যাপ্লিকেশন হিসেবে ব্যবহার করতে চান, তাহলে একটি কন্ট্রোলার তৈরি করতে পারেন, যেখানে প্যারামিটারগুলি HTTP রিকোয়েস্ট থেকে পাঠানো হবে:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/users")
    public void getUsers(@RequestParam int page, @RequestParam int size, 
                         @RequestParam String sortBy, @RequestParam String sortOrder) {
        userService.displayUsers(page, size, sortBy, sortOrder);
    }
}

এখানে:

  • @GetMapping("/users"): HTTP GET রিকোয়েস্টে /users URL এর জন্য কল হবে।
  • @RequestParam: URL থেকে প্যারামিটার (যেমন page, size, sortBy, sortOrder) গ্রহণ করা হচ্ছে।

উপসংহার

  • Pagination এবং Sorting Spring JDBC-এ সহজেই বাস্তবায়ন করা যায় SQL কোয়েরির মাধ্যমে।
  • Pagination-এর জন্য LIMIT এবং OFFSET SQL কোয়েরি ব্যবহার করা হয়, এবং Sorting-এর জন্য ORDER BY ক্লজ ব্যবহার করা হয়।
  • Spring JDBC-তে NamedParameterJdbcTemplate ব্যবহার করলে Pagination এবং Sorting এর ক্ষেত্রে কোড আরও পরিষ্কার এবং রক্ষণাবেক্ষণযোগ্য হয়।
Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion